package edu.zju.gis.cky.controller;

import edu.zju.gis.cky.entity.StatArea;
import edu.zju.gis.cky.entity.dto.StatAreaByExtentDTO;
import edu.zju.gis.cky.entity.dto.StatisticsAreaByXzqhDTO;
import edu.zju.gis.cky.service.StatisticService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author jiarui
 * @version 1.0, 2022-01-12
 */
@RequestMapping("/statistic")
@RestController
public class StatisticController {

    @Autowired
    private StatisticService service;

    /**
     * 5.根据元数据id统计范围内各个类型图斑的面积总和
     *
     * @param statAreaByExtentDTO 包括1.数据的表名，2.空间范围坐标串
     * @return 在所选范围内每个种类的面积统计
     */
    @PostMapping("/statisticsAreaByExtent")
    public List<StatArea> statisticsAreaByExtent(@RequestBody StatAreaByExtentDTO statAreaByExtentDTO) {
        return service.statisticsAreaByExtent(statAreaByExtentDTO);
    }

    /**
     * 6.根据元数据id和shp文件范围统计各个类型图斑的面积总和
     *
     * @return 范围内各个类型图斑的面积总和
     */
    @PostMapping("/shp")
    public List<StatArea> statisticsAreaByShp(@RequestParam Long id, @RequestParam("file") MultipartFile multipartFile) {
        return service.statisticsAreaByShp(id, multipartFile);
    }

    /**
     * 8.根据元数据id和行政区划范围统计各个类型图斑的面积总和
     *
     * @return 范围内各个类型图斑的面积总和
     */
    @PostMapping("/statisticsAreaByXzqh")
    public List<StatArea> statisticsAreaByXzqh(@RequestBody StatisticsAreaByXzqhDTO statisticsAreaByXzqhDTO) {
        return service.statisticsAreaByXzqh(statisticsAreaByXzqhDTO);
    }
}
